모의해킹
호스트기반모의해킹_11_SSH 취약점 진단
작성자 : Heehyeon Yoo|2025-11-22
# 모의해킹# 취약점 진단# SSH# 무차별 대입# Enumeration
1. 개요
SSH(Secure Shell)는 원격 시스템 제어를 위한 표준 프로토콜로, 강력한 암호화를 제공한다.
- 특징: 대부분 TCP 22번을 사용한다.
- 현황: OpenSSH 등 서비스 자체의 취약점(RCE 등)은 매우 드물다. 주로 설정 미흡(Misconfiguration)이나 취약한 비밀번호(Weak Credentials)가 주된 공격 벡터이다.
2. 주요 진단 항목
2.1 사용자 이름 정보 수집(Username Enumeration)
- 취약점: OpenSSH 7.7 이하 특정 버전에서 발생하는 타이밍 공격(Timing Attack) 취약점.
- 유효한 사용자(
root)와 무효한 사용자(invalid-user) 입력 시 서버의 응답 시간이나 패킷 크기가 미세하게 다른 점을 악용한다.
- 유효한 사용자(
- 진단 도구: Metasploit의
ssh_enumusers모듈.use auxiliary/scanner/ssh/ssh_enumusers set RHOSTS [Target_IP] set USER_FILE [Seclists_Path] run - 의의: 무차별 대입 공격의 타겟(유효 아이디)을 좁혀 공격 성공률을 비약적으로 높여준다.
2.2 무차별 대입 공격(Brute Force Attack)
- 개념: 유효한 사용자 ID에 대해 비밀번호 사전(Dictionary)을 대입하여 로그인을 시도한다.
- 반드시 확인할 것:
- 공개키 인증 강제 여부: 패스워드 로그인을 비활성화했다면 Brute Force는 불가능하다(안전).
- 계정 잠금 임계치(Lockout Threshold): 몇 회 실패 시 IP가 차단되거나 계정이 잠기는지 확인해야 한다.
3. 실무에서는?(Field Considerations)
"계정 잠금(Account Lockout)은 모의해킹의 실패다."
- 사전 협의 필수: Brute Force는 시스템 로그에 엄청난 노이즈를 발생시키고, 실제 운영 계정을 잠그어 가용성(Availability)을 침해할 수 있다.
- 반드시 고객사와 수행 여부, 시간, 대상 계정을 협의해야 한다.
- 방어 기제 테스트: 실제 공격보다는 "방어 시스템이 작동하는가?"를 검증하는 데 초점을 맞춘다.
- 방법: 존재하지 않는 아이디(
doesnotexist)로 50회 로그인 시도 -> IP가 차단(Fail2Ban 등)되는지 확인. - 이 방식은 실제 계정을 잠그지 않으면서 방어 정책을 안전하게 검증할 수 있다.
- 방법: 존재하지 않는 아이디(
- 효율성: 수만 개의 비밀번호를 대입하는 것보다,
root/root,admin/admin,service/service등 Top 10 Credentials를 시도하는 것이 성공률이 높다.